package com.jinmdz.fmis.api.api.service;

import com.jinmdz.fmis.api.base.BaseService;
import com.jinmdz.fmis.core.base.BaseResult;
import com.jinmdz.fmis.core.wrapper.ResultWrapper;
import com.jinmdz.fmis.dao.dao.SystemUserDao;
import com.jinmdz.fmis.dao.model.user.RoleUserViewItem;
import org.springframework.stereotype.Service;

import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.HashMap;

/**
 * UserService类
 *
 * @author LiCongLu
 * @date 2020-01-15 16:18
 */
@Service("userService")
public class UserService extends BaseService {

    @Resource
    private SystemUserDao systemUserDao;

    /**
     * 根据用户组编码加载用户组信息
     *
     * @param data 用户组编码数据
     * @return
     * @author LiCongLu
     * @date 2020-01-15 16:19
     */
    public BaseResult loadUserWithTypeCode(ArrayList<String> data) {
        if (data == null || data.size() == 0) {
            return failure("没有请求任何用户组编码");
        }
        HashMap<String, ArrayList<RoleUserViewItem>> dataMap = loadRoleUserMap(data);


        // 创建返回结果
        BaseResult<HashMap<String, ArrayList<RoleUserViewItem>>> result = ResultWrapper.getBaseResult();
        return success(result.setData(dataMap));
    }


    /**
     * 按照用户组编码获取字典数据
     *
     * @param data 用户组编码
     * @return
     * @author LiCongLu
     * @date 2020-02-16 11:00
     */
    public HashMap<String, ArrayList<RoleUserViewItem>> loadRoleUserMap(ArrayList<String> data) {
        // 得到集合数据
        ArrayList<RoleUserViewItem> items = systemUserDao.listRoleUserViewByCodes(data);
        // 调整返回结果
        HashMap<String, ArrayList<RoleUserViewItem>> dataMap = new HashMap<>(16);
        for (String type : data) {
            ArrayList<RoleUserViewItem> jobItems = new ArrayList<>();
            items.forEach(item -> {
                if (type.equals(item.getRoleCode())) {
                    jobItems.add(item);
                }
            });
            dataMap.put(type, jobItems);
        }
        return dataMap;
    }
}
